import gmpy2
import libnum
import random
import uuid

flag = "flag{" + str(uuid.uuid4()) + "}"
print(flag)
m = libnum.s2n(flag)

while 1:
    e = random.randint(100, 1000)
    p = libnum.generate_prime(1024)
    q = libnum.generate_prime(1024)
    phi_n = (p - 1) * (q - 1)
    t = gmpy2.gcd(e, phi_n)
    if t == e:
        continue
    t1 = e // t
    if gmpy2.invert(t1, phi_n) and t > 1:
        break
n = p * q
c = pow(m, e, n)
print("p=", p)
print("q=", q)
print("e=", e)
print("c=", c)
p= 174249453579934110654203014072074944735897437834563029808340617938740464997468462545223282790392298547143150495408386278197513266225790234403362212083780759675259365278370861515624166688160236524094834914419662232621672579885967652828520785638336092738535328856559778934887156116030885278424485387700476074909
q= 132099197681279035097430475924001165632745468599112068054853357236701737572817001738929144241223316669362618582844437600374991393938834208172909290367958533239213282274437219033117421381725665910196703604468447557590430530081182865474105979998439172559518536487281761650652853369679343557867482007005754584719
e= 897
c= 21523441568504370416318528395599551300277332756017881063949119909756084615360633102760783496968148223800189785514385374469111458254083380997064590135182608615460746545077951236834428441381754939631269059148594424408659547808934338770382385510281289369239684684846652677713615977986868686622633720469640591746928531210491704076639188357712127537301337837478507570026368823353495913357179297677622559466129248193583966166978612863748005550398971930357487745117291460636395528161014126413891787025821148429176671094878943376140711735685735686652063430724480381185334373050102368853232478301162889337709842023615350146756
